<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    var arr = [3,2,1,100]
    // console.log(arr[-1])
    // 目标：通过代理，允许数组的下标为负。
    //   arr[-n]: 表示倒数第n元素。arr[-1]表示倒数第1个

    var arr1 = new Proxy(arr, {
      get: function(target,prop) {
        // 如果prop是数字
        if (isNaN(prop)) {
          // 说明prop不是数值
          return target[prop]
        } else {
          console.log(target,prop)
          // -1: 倒数第1个  length - 1
          // -2: 倒数第2个  length - 2
          var idx = Number(prop)
          // 把负数下标转成合法的正数下标
          if (idx < 0) {
            idx = target.length + idx
          }
          return target[idx]
        }
      }
    })

    // console.log(arr1[1])
    console.log(arr1[-1])
    // console.log( arr.1 )
    // console.log( arr[1] )
    // console.log(arr["sort"]())


  </script>
</body>
</html>